/**
 * 智能体相关类型定义
 * 定义智能体数据结构和相关接口
 */

/**
 * 智能体基础信息接口
 */
export interface Agent {
  /** 唯一标识符 */
  id: string;
  /** 智能体名称 */
  name: string;
  /** 智能体描述 */
  description?: string;
  /** 作者 */
  author: string;
  /** 版本 */
  version: string;
  /** 分类 */
  category: string;
  /** 标签 */
  tags: string[];
  /** 分享链接 */
  shareUrl: string;
  /** 配置URL */
  config?: string;
  /** 使用说明 */
  usage?: string;
  /** 创建时间 */
  createdAt: string;
  /** 更新时间 */
  updatedAt: string;
}

/**
 * 智能体数据容器接口
 */
export interface AgentData {
  /** 智能体列表 */
  agents: Agent[];
}

/**
 * 创建智能体时的输入参数
 */
export type CreateAgentInput = Omit<Agent, 'id' | 'createdAt' | 'updatedAt'>;

/**
 * 更新智能体时的输入参数
 */
export type UpdateAgentInput = Partial<Omit<CreateAgentInput, 'id'>>;

/**
 * 编辑智能体时的输入参数（包含ID）
 */
export type EditAgentInput = CreateAgentInput & { id: string };

/**
 * API响应基础接口
 */
export interface ApiResponse<T = any> {
  /** 操作是否成功 */
  success: boolean;
  /** 返回的数据 */
  data?: T;
  /** 错误信息 */
  error?: string;
  /** 提示信息 */
  message?: string;
}

/**
 * 备份信息接口
 */
export interface BackupInfo {
  /** 备份ID */
  id: string;
  /** 备份文件名 */
  filename: string;
  /** 创建时间 */
  createdAt: string;
  /** 文件大小 */
  size: number;
  /** 智能体数量 */
  agentCount: number;
}

/**
 * 智能体操作结果类型
 */
export interface AgentOperationResult<T = Agent> {
  /** 操作是否成功 */
  success: boolean;
  /** 错误信息（如果有） */
  error?: string;
  /** 提示信息（如果有） */
  message?: string;
  /** 返回的数据（如果有） */
  data?: T;
}

/**
 * 弹窗类型枚举
 */
export enum DialogType {
  /** 注册弹窗 */
  REGISTER = 'register',
  /** 删除确认弹窗 */
  DELETE_CONFIRM = 'deleteConfirm'
}

/**
 * 弹窗状态接口
 */
export interface DialogState {
  /** 弹窗类型 */
  type: DialogType | null;
  /** 弹窗是否可见 */
  visible: boolean;
  /** 弹窗相关数据 */
  data?: any;
}